﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Poligas_ERP.Classes;
using ModeloDesenvolvimento;
using System.Data.SqlClient;
using Sys.Project.Funcoes;

/*ESCRITO DIA 20/12/2011*/
namespace Poligas_ERP.Forms
{
    public partial class FrmClientes : Form
    {
        SqlConnection cnx = new SqlConnection();
        SqlCommand cmd = new SqlCommand();
        SqlDataReader dr;


        ValidarCpfCnpj f = new ValidarCpfCnpj();
        DataTable dtCliente = new DataTable();
        DataTable dtRetornoSetor = new DataTable();
        Db db = new Db();

        Clientes cliente = new Clientes();
        Util util = new Util();

        int idCliente = 0;
        int operacao = 0;

        public FrmClientes()
        {
            InitializeComponent();
        }

        private void FrmClientes_Load(object sender, EventArgs e)
        {
            dgvClientes.AutoGenerateColumns = false;
            HabilitarControlesIniciais(true);
            LimparCampos();
            LocalizarDados();
            txtPesquisar.Focus();
            CarregaSetor();
        }

        private void CarregaTop200()
        {
            dgvClientes.AutoGenerateColumns = false;
            dgvClientes.DataSource = cliente.RetornaTop200();

            RecuperarDadosPorCodigo();

        }

        private void RecuperarDadosPorCodigo()
        {
            if(dgvClientes.CurrentRow != null)
            {
                Int32 CodCliente = Convert.ToInt32(dgvClientes.SelectedRows[0].Cells[0].Value);
                dtCliente = cliente.RecuperaDadosPorCodigo(CodCliente);


                if(dtCliente.Rows.Count > 0)
                {
                    idCliente = Convert.ToInt32(dtCliente.Rows[0]["CodCliente"]);
                    txtCodigo.Text = Convert.ToString(idCliente);
                    txtNome.Text = dtCliente.Rows[0]["Nome"].ToString();
                    txtEndereco.Text = dtCliente.Rows[0]["Endereco"].ToString();
                    txtCompl.Text = dtCliente.Rows[0]["Compl"].ToString();
                    txtBairro.Text = dtCliente.Rows[0]["Bairro"].ToString();
                    txtCidade.Text = dtCliente.Rows[0]["Cidade"].ToString();
                    txtEstado.Text = dtCliente.Rows[0]["Estado"].ToString();
                    txtCpfCnpj.Text = dtCliente.Rows[0]["CpfCnpj"].ToString();
                    txtRgIe.Text = dtCliente.Rows[0]["IeRg"].ToString();
                    txtTelefone.Text = dtCliente.Rows[0]["Fone"].ToString();
                    txtFax.Text = dtCliente.Rows[0]["Fax"].ToString();
                    txtCelular.Text = dtCliente.Rows[0]["Celular"].ToString();
                    txtEmail.Text = dtCliente.Rows[0]["Email"].ToString();
                    txtCredito.Text = dtCliente.Rows[0]["Credito"].ToString();
                    txtMotivo.Text = dtCliente.Rows[0]["Motivo"].ToString();
                    txtCobranca.Text = dtCliente.Rows[0]["Cobranca"].ToString();
                    txtLimite.Text = string.Format("{0:N0}", dtCliente.Rows[0]["Limite"]);
                    txtDataNascimento.Text = dtCliente.Rows[0]["DataNascimento"].ToString();
                    txtAutorizado.Text = dtCliente.Rows[0]["Autorizado"].ToString();
                    txtEndEntrega.Text = dtCliente.Rows[0]["EndEntrega"].ToString();
                    cmbSetor.SelectedValue = dtCliente.Rows[0]["CodSetor"].ToString();
                    txtEmpresa.Text = dtCliente.Rows[0]["Empresa"].ToString();
                    txtFoneEmpresa.Text = dtCliente.Rows[0]["FoneEmpresa"].ToString();
                    txtSalario.Text = string.Format("{0:N0}", dtCliente.Rows[0]["Salario"].ToString());
                    txtRef1.Text = dtCliente.Rows[0]["Ref1"].ToString();
                    txtFoneRef1.Text = dtCliente.Rows[0]["FoneRef1"].ToString();
                    txtRef2.Text = dtCliente.Rows[0]["Ref2"].ToString();
                    txtFoneRef2.Text = dtCliente.Rows[0]["FoneRef2"].ToString();
                    txtRef3.Text = dtCliente.Rows[0]["Ref3"].ToString();
                    txtFoneRef3.Text = dtCliente.Rows[0]["FoneRef3"].ToString();
                    txtEstCivil.Text = dtCliente.Rows[0]["EstCivil"].ToString();
                    txtConjuge.Text = dtCliente.Rows[0]["Conjuge"].ToString();
                    txtObservacoes.Text = dtCliente.Rows[0]["Observacoes"].ToString();
                }
            }

            /*  if(dgvClientes.CurrentRow != null)
              {
                  int id = Convert.ToInt32(dgvClientes.SelectedRows[0].Cells[0].Value);
                  cnx = db.AbreConexao("strConexao");
                  cmd = db.getCommand(cnx);

                  cmd.CommandText = "spClientesSelect";

                  cmd.Parameters.AddWithValue("@CodCliente", idCliente);

                  dr = cmd.ExecuteReader();

                  if(dr.Read())
                  {
                      idCliente = Convert.ToInt32(dr["CodCliente"]);

                      txtCodigo.Text = idCliente.ToString();
                      txtNome.Text = dr["Nome"].ToString();
                      txtEndereco.Text = dr["Endereco"].ToString();
                      txtCompl.Text = dr["Compl"].ToString();
                      txtBairro.Text = dr["Bairro"].ToString();
                      txtCidade.Text = dr["Cidade"].ToString();
                      txtEstado.Text = dr["Estado"].ToString();
                      txtCpfCnpj.Text = dr["CpfCnpj"].ToString();
                      txtRgIe.Text = dtCliente.Rows[0]["IeRg"].ToString();
                      txtTelefone.Text = dr["Fone"].ToString();
                      txtFax.Text = dr["Fax"].ToString();
                      txtCelular.Text = dr["Celular"].ToString();
                      txtEmail.Text = dr["Email"].ToString();
                      txtCredito.Text = dr["Credito"].ToString();
                      txtMotivo.Text = dr["Motivo"].ToString();
                      txtCobranca.Text = dr["Cobranca"].ToString();
                      txtLimite.Text = string.Format("{0:N0}", dr["Limite"]);
                      txtDataNascimento.Text = dr["DataNascimento"].ToString();
                      txtAutorizado.Text = dr["Autorizado"].ToString();
                      txtEndEntrega.Text = dr["EndEntrega"].ToString();
                      cmbSetor.SelectedValue = dr["Setor"].ToString();
                      txtEmpresa.Text = dr["Empresa"].ToString();
                      txtFoneEmpresa.Text = dr["FoneEmpresa"].ToString();
                      txtSalario.Text = string.Format("{0:N0}", dr["Salario"].ToString());
                      txtRef1.Text = dr["Ref1"].ToString();
                      txtFoneRef1.Text = dr["FoneRef1"].ToString();
                      txtRef2.Text = dr["Ref2"].ToString();
                      txtFoneRef2.Text = dr["FoneRef2"].ToString();
                      txtRef3.Text = dr["Ref3"].ToString();
                      txtFoneRef3.Text = dr["FoneRef3"].ToString();
                      txtEstCivil.Text = dr["EstCivil"].ToString();
                      txtConjuge.Text = dr["Conjuge"].ToString();
                      txtObservacoes.Text = dr["Observacoes"].ToString();
                  }
                  dr.Close();

                  db.FechaConexao(cnx);
              }
              else
              {
                  LimparCampos();
              }*/


        }
        private void LocalizarDados()
        {

            dgvClientes.DataSource = cliente.LocalizarDados(txtPesquisar.Text);

            btnEditar.Enabled = dgvClientes.Rows.Count > 0;
            btnExcluir.Enabled = btnEditar.Enabled;

            //RecuperarDadosPorCodigo();

            /*
            cnx = db.AbreConexao("strConexao");
            cmd = db.getCommand(cnx);

            cmd.Parameters.AddWithValue("@Nome", "%" + txtPesquisar.Text + "%");

            cmd.CommandText = "spClientesSelectPesquisar";
            dr = cmd.ExecuteReader();

            dtCliente.Clear();
            dtCliente.Load(dr);

            db.FechaConexao(cnx);

            dgvClientes.DataSource = dtCliente;

            btnEditar.Enabled = dgvClientes.Rows.Count > 0;
            btnExcluir.Enabled = btnEditar.Enabled;

            RecuperarDadosPorCodigo();*/
        }
        private void CarregaSetor()
        {
            dtRetornoSetor = cliente.CarregaSetor();

            if(dtRetornoSetor.Rows.Count > 0)
            {
                cmbSetor.DataSource = dtRetornoSetor;
                cmbSetor.DisplayMember = "Descricao";
                cmbSetor.ValueMember = "CodSetor";
            }

        }
        private void LimparCampos()
        {
            txtCodigo.Clear();
            txtNome.Clear();
            txtEndereco.Clear();
            txtCpfCnpj.Clear();
            txtRgIe.Clear();
            txtCompl.Clear();
            txtBairro.Clear();
            txtCidade.Clear();
            txtEstado.Clear();
            txtCep.Clear();
            txtCelular.Clear();
            txtTelefone.Clear();
            txtFax.Clear();
            txtCelular.Clear();
            txtCelular.Clear();
            txtEmail.Clear();
            txtCredito.Clear();
            txtMotivo.Clear();
            txtCobranca.Clear();
            txtLimite.Clear();
            txtDataMotivo.Clear();
            txtAutorizado.Clear();
            txtEndEntrega.Clear();
            cmbSetor.SelectedValue = 0;
            txtEmpresa.Clear();
            txtDataNascimento.Clear();
            txtFoneEmpresa.Clear();
            txtSalario.Clear();
            txtRef1.Clear();
            txtFoneRef1.Clear();
            txtRef2.Clear();
            txtFoneRef2.Clear();
            txtRef3.Clear();
            txtFoneRef3.Clear();
            txtEstCivil.Clear();
            txtConjuge.Clear();
            txtObservacoes.Clear();

            idCliente = 0;

        }
        private void HabilitarControlesIniciais(bool status)
        {
            gbxGrid.Enabled = status;
            gbxCadastros.Enabled = !status;
            gbxReferencias.Enabled = !status;
            HabilitarBotoes(status);
        }
        private void HabilitarBotoes(bool status)
        {
            btnNovo.Enabled = status;
            btnEditar.Enabled = status;
            btnExcluir.Enabled = status;
            btnGravar.Enabled = !status;
            btnCancelar.Enabled = !status;
        }

        //private void GravarDados(int op)
        //{
        //    string msg = string.Empty;
        //    cnx = db.AbreConexao("Connection");
        //    cmd = db.getCommand(cnx);

        //    if(op == 1)
        //    {
        //        cmd.CommandText = "spClienteInsert";
        //        msg = "Registro Inserido com Sucesso";
        //        Parametros();

        //    }
        //    else
        //    {
        //        cmd.CommandText = "spClienteUpdate";
        //        msg = "Registro alterado com sucesso";

        //        cmd.Parameters.Clear();
        //        cmd.Parameters.AddWithValue("@CodCliente", txtCodigo.Text);
        //        Parametros();
        //    }

        //    try
        //    {
        //        int i = cmd.ExecuteNonQuery();
        //        if(i > 0)
        //        {
        //            HabilitarControlesIniciais(true);
        //            LimparCampos();
        //            LocalizarDados();
        //            util.Aviso(msg);
        //        }
        //        else
        //            util.Aviso("Erro ao Gravar o Registro.");
        //    }
        //    catch(SqlException sqlErrr)
        //    {
        //        RetornaErroSqlServer retErro = new RetornaErroSqlServer();
        //        string msgErro = retErro.RetornaErro(sqlErrr.Number);
        //        if(string.IsNullOrEmpty(msgErro))
        //            msgErro = sqlErrr.Message;
        //        util.Aviso(msgErro);
        //    }
        //    catch(Exception err)
        //    {
        //        util.Aviso(err.Message);
        //    }
        //    finally
        //    {
        //        db.FechaConexao(cnx);
        //    }
        //}


        private void btnNovo_Click(object sender, EventArgs e)
        {
            LimparCampos();
            tbCadastros.SelectedTab = tbCadastroBasico;
            HabilitarControlesIniciais(false);
            // tipoOperacao = 1;
            txtNome.Focus();
        }
        private void btnEditar_Click(object sender, EventArgs e)
        {
            tbCadastros.SelectedTab = tbCadastroBasico;
            HabilitarControlesIniciais(false);
            operacao = 2;
            txtNome.Focus();
        }
        private void btnGravar_Click(object sender, EventArgs e)
        {
            /*  if(string.IsNullOrEmpty(txtNome.Text.Trim()))
               {
                   util.Aviso("O Campo Nome não pode Ficar em branco");
                   txtNome.Focus();
                   return;
               }*/


            if(string.IsNullOrEmpty(txtCodigo.Text.Trim()))
            {

                if(cliente.Inserir(txtNome.Text, txtEndereco.Text, txtCompl.Text, txtBairro.Text,
                    txtCidade.Text, txtEstado.Text, txtCep.Text, txtCpfCnpj.Text, txtRgIe.Text,
                    txtTelefone.Text, txtFax.Text, txtCelular.Text, txtEmail.Text, txtCredito.Text,
                    txtMotivo.Text, txtDataMotivo.Text, txtCobranca.Text, txtLimite.Text, txtDataNascimento.Text,
                    txtAutorizado.Text, txtEndEntrega.Text, Convert.ToInt32(cmbSetor.SelectedValue), txtEmpresa.Text, txtFoneEmpresa.Text,
                   txtSalario.Text, txtRef1.Text, txtFoneRef1.Text, txtRef2.Text, txtFoneRef2.Text, txtRef3.Text,
                    txtFoneRef3.Text, txtEstCivil.Text, txtConjuge.Text, txtObservacoes.Text) == false)
                {
                    util.Aviso("Registro Incluido com Sucesso");
                }
                else
                {
                    util.Aviso("Erro ao Incluir Registro");
                }

            }
            else
            {
                Int32 CodCliente = Convert.ToInt32(dgvClientes.SelectedRows[0].Cells[0].Value);

                if(cliente.Atualizar(CodCliente, txtNome.Text, txtEndereco.Text, txtCompl.Text, txtBairro.Text,
                    txtCidade.Text, txtEstado.Text, txtCep.Text, txtCpfCnpj.Text, txtRgIe.Text,
                    txtTelefone.Text, txtFax.Text, txtCelular.Text, txtEmail.Text, txtCredito.Text,
                    txtMotivo.Text, txtDataMotivo.Text, txtCobranca.Text, txtLimite.Text, txtDataNascimento.Text,
                    txtAutorizado.Text, txtEndEntrega.Text, Convert.ToInt32(cmbSetor.SelectedValue), txtEmpresa.Text, txtFoneEmpresa.Text,
                   txtSalario.Text, txtRef1.Text, txtFoneRef1.Text, txtRef2.Text, txtFoneRef2.Text, txtRef3.Text,
                    txtFoneRef3.Text, txtEstCivil.Text, txtConjuge.Text, txtObservacoes.Text) == false)
                {

                    util.Aviso("Registro Alterado com Sucesso");
                }
                else
                {
                    util.Aviso("Erro ao Atualizar Registro");

                }
            }
            //GravarDados(operacao);
            HabilitarControlesIniciais(true);
            LimparCampos();
            LocalizarDados();

        }
        private void btnExcluir_Click(object sender, EventArgs e)
        {
            idCliente = Convert.ToInt32(dgvClientes.SelectedRows[0].Cells[0].Value);

            string pergunta = "Deseja Excluir o Registro?";

            if(idCliente <= 0)
            {
                util.Aviso("Selecione um arquivo para Exclusão");
                return;
            }

            if(util.Decide(pergunta, true))
            {
                Int32 CodCliente = Convert.ToInt32(dgvClientes.SelectedRows[0].Cells[0].Value);

                if(cliente.Excluir(CodCliente))
                    util.Aviso("Arquivo Excluido com Sucesso");
                else
                    util.Aviso("Erro ao Excluir");
            }

            LimparCampos();
            LocalizarDados();
        }
        private void btnCancelar_Click(object sender, EventArgs e)
        {
            LimparCampos();
            HabilitarControlesIniciais(true);
            LocalizarDados();
        }

        private void dgvClientes_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
            if(dgvClientes.CurrentRow != null)
                RecuperarDadosPorCodigo();
        }
        private void txtPesquisar_TextChanged(object sender, EventArgs e)
        {
            LocalizarDados();
        }
        private void FrmClientes_KeyDown(object sender, KeyEventArgs e)
        {
            if(e.KeyCode == Keys.Return)
            {
                SendKeys.Send("{TAB}");
            }
        }
        private void FrmClientes_KeyPress(object sender, KeyPressEventArgs e)
        {
            if(e.KeyChar == (char)13)
            {
                e.Handled = true;
            }
        }

        //private void Parametros()
        //{
        //    cmd.Parameters.AddWithValue("@Nome", txtNome.Text);
        //    cmd.Parameters.AddWithValue("@Endereco", txtEndereco.Text);
        //    cmd.Parameters.AddWithValue("@Compl", txtCompl.Text);
        //    cmd.Parameters.AddWithValue("@Bairro", txtBairro.Text);
        //    cmd.Parameters.AddWithValue("@Cidade", txtCidade.Text);
        //    cmd.Parameters.AddWithValue("@Estado", txtEstado.Text);
        //    cmd.Parameters.AddWithValue("@Cep", txtCep.Text);
        //    cmd.Parameters.AddWithValue("@CpfCnpj", txtCpfCnpj.Text);
        //    cmd.Parameters.AddWithValue("@IeRg", txtRgIe.Text);
        //    cmd.Parameters.AddWithValue("@Fone", txtTelefone.Text);
        //    cmd.Parameters.AddWithValue("@Fax", txtFax.Text);
        //    cmd.Parameters.AddWithValue("@Celular", txtCelular.Text);
        //    cmd.Parameters.AddWithValue("@Email", txtEmail.Text);
        //    cmd.Parameters.AddWithValue("@Credito", txtCredito.Text);
        //    cmd.Parameters.AddWithValue("@Motivo", txtMotivo.Text);

        //    if(txtDataMotivo.Text == "")
        //        cmd.Parameters.AddWithValue("@DtMotivo", DBNull.Value);
        //    else
        //        cmd.Parameters.AddWithValue("@DtMotivo", Convert.ToDateTime(txtDataMotivo.Text));

        //    cmd.Parameters.AddWithValue("@Cobranca ", txtCobranca.Text);
        //    cmd.Parameters.AddWithValue("@Limite", Convert.ToDecimal(txtLimite.Text));

        //    if(txtDataNascimento.Text == "")
        //        cmd.Parameters.AddWithValue("@DataNascimento", DBNull.Value);
        //    else
        //        cmd.Parameters.AddWithValue("@DataNascimento", Convert.ToDateTime(txtDataNascimento.Text));

        //    cmd.Parameters.AddWithValue("@Autorizado", txtAutorizado.Text);
        //    cmd.Parameters.AddWithValue("@EndEntrega", txtEndEntrega.Text);
        //    cmd.Parameters.AddWithValue("@Setor", Convert.ToInt32(cmbSetor.SelectedValue));
        //    cmd.Parameters.AddWithValue("@Empresa", txtEmpresa.Text);
        //    cmd.Parameters.AddWithValue("@FoneEmpresa", txtFoneEmpresa.Text);
        //    cmd.Parameters.AddWithValue("@Salario ", Convert.ToDecimal(txtSalario.Text));
        //    cmd.Parameters.AddWithValue("@Ref1", txtRef1.Text);
        //    cmd.Parameters.AddWithValue("@FoneRef1", txtFoneRef1.Text);
        //    cmd.Parameters.AddWithValue("@Ref2", txtRef2.Text);
        //    cmd.Parameters.AddWithValue("@FoneRef2", txtFoneRef2.Text);
        //    cmd.Parameters.AddWithValue("@Ref3", txtRef3.Text);
        //    cmd.Parameters.AddWithValue("@FoneRef3", txtFoneRef3.Text);
        //    cmd.Parameters.AddWithValue("@EstCivil", txtEstCivil.Text);
        //    cmd.Parameters.AddWithValue("@Conjuge", txtConjuge.Text);
        //    cmd.Parameters.AddWithValue("@Observacoes", txtObservacoes.Text);
        //}
    }
}
